// 注册、登录
package controller

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"pass-config/service"
	"strings"
)

type Register struct{}

// 检查用户重复
func IsExistSameUsr(c *gin.Context) {
	var r service.RegistService

	usr := strings.Trim(c.PostForm("username"), " ")

	// 参数检查
	if usr == "" {
		c.JSON(http.StatusOK, gin.H{
			"code":    400,
			"message": "请求参数不足",
		})
		return
	}

	// 正式注册
	r.Username = usr
	res := r.IsExistSameUsr()
	// 存在该用户
	if res {
		c.JSON(http.StatusOK, gin.H{
			"code":    400,
			"message": "用户已存在",
		})
		return
	}

	// 允许注册
	c.JSON(http.StatusOK, gin.H{
		"code":    201,
		"message": "允许注册",
	})

}

// 注册用户
func Regist(c *gin.Context) {
	var r service.RegistService

	// 参数检查
	if !checkRegisterParam(c) {
		return
	}

	// 正式注册
	r.Username = strings.Trim(c.PostForm("username"), " ")
	r.Password = strings.Trim(c.PostForm("password"), " ")
	res := r.Regist()
	// 正确返回
	c.JSON(http.StatusOK, gin.H{
		"code":    201,
		"message": res,
	})

}

// 登录用户
func Login(c *gin.Context) {
	var r service.RegistService

	// 参数检查
	if !checkRegisterParam(c) {
		return
	}

	// 正式注册
	r.Username = strings.Trim(c.PostForm("username"), " ")
	r.Password = strings.Trim(c.PostForm("password"), " ")
	res := r.Login()
	// 正确返回
	c.JSON(http.StatusOK, gin.H{
		"code":    201,
		"message": res,
	})

}

// 复用：参数检查
func checkRegisterParam(c *gin.Context) bool {
	usr := strings.Trim(c.PostForm("username"), " ")
	pass := strings.Trim(c.PostForm("password"), " ")

	// 参数检查
	if usr == "" || pass == "" || len(pass) < 6 {
		c.JSON(http.StatusOK, gin.H{
			"code":    400,
			"message": "请求参数不足",
		})
		return false
	}
	return true
}
